package Leetcode.lc124;

import Leetcode.tools.TreeNode;

/***
 * 最大子树和，和最大子直径是好兄弟树形DP，处理最值，后序遍历
 */
public class Sloution {
    int res=Integer.MIN_VALUE;
    public int maxPathSum(TreeNode root) {
        finMax(root);
        return res;
    }

    private int finMax(TreeNode root) {
        if(root==null) return 0;
        int left=finMax(root.left);
        int right=finMax(root.right);
        res=Math.max(left+right+root.val,res);
        //返回最大值
        return Math.max(Math.max(left,right)+root.val,0);
    }
}
